function getMaillistSubscribersGrid(){
	delRec = function(){
		var c = grid.selModel.getCount();
		if(c < 1){
			Ext.MessageBox.alert('Ошибка','Не выделено ни одной записи.');
			return;
		}
		Ext.MessageBox.confirm('Подтверждение','Вы действительно хотите удалить выделенное?',
			function(btn){
				if (btn!='yes') return;
				st.remove(grid.selModel.getSelected());
		});
	}
	addNewRec = function(){
		var rt = st.recordType;
		var n = new rt({Name1: 'Фамилия', Name2: 'Имя', Name3: 'Отчество', Email: 'email@example.com',Active: true, Phone:''});
		grid.stopEditing();
		st.insert(0, n);
		grid.startEditing(0, 0);
	}
	var st = new Ext.data.Store({
		proxy: new Ext.data.HttpProxy({url: '/maillist/subscribers'}),
		restful: true,
		reader: new Ext.data.JsonReader({root: 'data',totalProperty: 'total',idProperty: 'Id'},[ 
			{name: 'Id', type: 'int', mapping: 'Id'}
			,{name: 'Email', type: 'string', mapping: 'Email'}
			,{name: 'Name1', type: 'string', mapping: 'Name1'}
			,{name: 'Name2', type: 'string', mapping: 'Name2'}
			,{name: 'Name3', type: 'string', mapping: 'Name3'}
            ,{name: 'JoinDate', type: 'date', mapping: 'JoinDate'}
            ,{name: 'Active', type: 'boolean', mapping: 'Active'}
            ,{name: 'Phone', type: 'string', mapping: 'Phone'}
		])
		,writer:new Ext.data.JsonWriter({encode: false}),
	});
	st.load();
		
	var grid = new Ext.grid.EditorGridPanel({
		closable: true,
		store: st,
		clicksToEdit:2,
		height: 350,
		width: 600,
		title: 'Подписчики',
		selModel: new Ext.grid.RowSelectionModel({singleSelect:false})
		,bbar: new Ext.PagingToolbar({
			pageSize: 25,
			store: st,
			displayInfo: true,
			displayMsg: 'записи {0} - {1} из {2}',
			emptyMsg: "нет записей",
		})
		,tbar: [{text: 'Добавить',tooltip: 'Добавить новую запись', handler: addNewRec}
			,{text: 'Удалить запись',tooltip: 'Удаление выделенной записи', scope:this, handler: delRec}
			,new Nippy.SearchField({ store: st, params: {start: 0, limit: 25}, width: 120})
		]
		,columns: [{header: 'Id', width: 50, sortable:true, dataIndex: 'Id'}
			,{header:'Email', width: 150, sortable:true, dataIndex: 'Email',editor: new Ext.form.TextField({allowBlank: true,maxLength: 255})}
			,{header:'Фамилия', width:150, sortable:true, dataIndex: 'Name1',editor: new Ext.form.TextField({allowBlank: true,maxLength: 255})}
			,{header:'Имя', width:150, sortable:true, dataIndex: 'Name2',editor: new Ext.form.TextField({allowBlank: true,maxLength: 255})}
			,{header:'Отчество', width:150, sortable:true, dataIndex: 'Name3',editor: new Ext.form.TextField({allowBlank: true,maxLength: 255})}
            ,{header: 'Дата рег.', tooltip: 'Дата регистрации пользователя', width: 100, sortable:true, dataIndex: 'JoinDate', format: 'd.m.Y', xtype: 'datecolumn'}
			,{header: 'Подписан', tooltip: 'Пользователь подписан на расслыку', width: 100, sortable:true, dataIndex: 'Active',trueText:  'да',falseText:  'нет',xtype: 'booleancolumn'}
            ,{header: 'Телефон', width: 100, sortable:true, dataIndex: 'Phone',editor: new Ext.form.TextField({allowBlank: true,maxLength: 255})}
		]//column
	});
	return grid;
}//function